fix errors in gpi writer related to bitmaps. (#1243)
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Thu, 23 Nov 2023 14:22:05 +0000 (07:22 -0700)
committerGitHub <noreply@github.com>
Thu, 23 Nov 2023 14:22:05 +0000 (07:22 -0700)
Erroneous warnings "garmin_gpi: Code error in load_bitmap_from_file,
expected output size 1060, actual output -28."

Corrupted colors when input bitmap has 24 bits per pixel.

garmin_gpi.cc

index a936cd373d7b514387fc6b111255fafb42cd9801..3877de63c94e5f89a8c40a2bf18a2f5d8c063705 100644 (file)
@@ -1145,7 +1145,6 @@ GarminGPIFormat::load_bitmap_from_file(const char* fname, const unsigned char**
   }
 
   ptr = (unsigned char*) xmalloc(sz);
-  const unsigned char* const startptr = ptr;
   dest_h = (gpi_bitmap_header_t*)ptr;
   *data = ptr;
   *data_sz = sz;
@@ -1176,8 +1175,8 @@ GarminGPIFormat::load_bitmap_from_file(const char* fname, const unsigned char**
       unsigned char* p = ptr;
 
       for (j = 0; j < src_h.width; j++) {
-        int color = (int32_t)gbfgetint16(f) | (gbfgetc(f) << 16);
-        le_write32(p, color);
+        gbfread(p, 1, 3, f);
+        p[3] = 0x00;
         p += 4;
       }
       for (j = (src_h.width * src_h.bpp) / 8; j < src_line_sz; j++) {
@@ -1202,10 +1201,6 @@ GarminGPIFormat::load_bitmap_from_file(const char* fname, const unsigned char**
     }
   }
 
-  auto bytesout = ptr - startptr;
-  if (bytesout != *data_sz) {
-    warning(MYNAME ": Code error in load_bitmap_from_file, expected output size %d, actual output %td.", *data_sz, bytesout);
-  }
   gbfclose(f);
 }